package hu.bme.mit.examples.uml.incquery.databinding.demo.handlers;
import hu.bme.mit.examples.uml.incquery.databinding.demo.ClassView;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.commands.IHandler;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.papyrus.editor.PapyrusMultiDiagramEditor;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.handlers.HandlerUtil;
import org.eclipse.incquery.runtime.exception.IncQueryException;
public class LoadUMLModelHandler extends AbstractHandler implements IHandler {
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
try {
IWorkbenchPage page = HandlerUtil.getActiveSite(event).getPage();
ClassView view = (ClassView) page.findView(ClassView.ID);
if (view == null) {
view = (ClassView) page.showView(ClassView.ID);
}
PapyrusMultiDiagramEditor providerEditor = (PapyrusMultiDiagramEditor) HandlerUtil.getActiveEditor(event);
ResourceSet resourceSet = providerEditor.getDiagramEditPart().getEditingDomain().getResourceSet();
view.loadModel(resourceSet);
return null;
} catch (PartInitException e) {
throw new ExecutionException("Cannot find view", e);
} catch (IncQueryException e) {
throw new ExecutionException("Error initializing Pattern Matcher", e);
}
}
}